package com.example.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.domain.entity.Account;
import com.example.domain.entity.Admin;
import com.example.domain.entity.Params;

import org.springframework.stereotype.Service;

import javax.servlet.http.HttpServletRequest;
import java.util.List;



public interface AdminService {

    /**
     * 查询所有管理员信息
     * @return 管理员列表
     */
    List<Admin> findAll();

    /**
     * 根据搜索条件分页查询管理员信息
     * @param params 分页和搜索参数
     * @return 分页后的管理员信息
     */
    Page<Admin> findBySearch(Params params);

    /**
     * 新增管理员
     * @param admin 管理员实体
     */
    void add(Admin admin);

    /**
     * 更新管理员信息
     * @param admin 管理员实体
     */
    void update(Admin admin);

    /**
     * 根据ID删除管理员
     * @param id 管理员ID
     */
    void delete(Integer id);

    /**
     * 管理员登录
     * @param admin 管理员账号信息
     * @param key 验证码key
     * @param request HttpServletRequest对象
     * @return 登录成功后的账户信息
     */
    Account login(Account admin, String key, HttpServletRequest request);

    /**
     * 根据ID查找管理员
     * @param id 管理员ID
     * @return 管理员实体
     */
    Admin findById(Integer id);

    /**
     * 用户修改密码
     * @param account 账户信息
     */
    void updatePassword(Account account);

    /**
     * 修改个人信息
     * @param account 账户信息
     */
    void updatePersonal(Account account);
}